package admin

import (
	"MBGAdmin/controllers"
	"MBGAdmin/models"
	"MBGAdmin/util"
)

// 认证基本控制器 （需要认证的控制器一律继承结构体）
type AuthController struct {
	controllers.BaseController
	Admin models.Admins
}

// 认证控制
func (c *AuthController) Prepare() {
	// 获取session为空则跳转登录
	admin := c.GetSession("admin")
	if admin == nil {
		c.Redirect("/admin/login", 302)
		c.StopRun()
	} else {
		c.Admin = admin.(models.Admins)
	}
	// 执行父类Prepare
	c.BaseController.Prepare()
	// 验证管理员是否有权限
	if !util.VerifyMenuByAdminId(c.Admin, c.Ctx.Input.URI()) {
		if c.Ctx.Input.IsAjax() {
			c.BaseResponse(1, "当前管理员没有权限,已被禁止操作！")
			return
		} else {
			c.Display("error/401.html")
			return
		}
	}
	// 获取菜单的分级名称
	c.Data["menuNames"] = util.GetMenuLevelNameByUri(c.Ctx.Input.URI())
	// 获取数据附加到模板
	c.Data["admin"] = c.Admin
}
